In financial markets, defense, online gaming, and other types of applications, computing systems may be required to have real-time capabilities. A computing system with real-time capabilities means that the computing system can run applications such that one or more real-time criteria are satisfied. In particular, such real-time criteria usually specify the maximum length of time in which an application is permitted to respond to a given request made of the application. In so-called extreme or premium real-time environments, this length of time may be specified as 100 microseconds or less.
Many types of computing systems have interrupt architectures in which non-maskable interrupts that are generated, such as interrupts that are known as system management interrupts (SMI's), are transmitted to the firmware of the computing systems for appropriate handling. These types of interrupts can denote thermal events, which indicate that a computing system is running at a greater than specified operating temperature. These types of interrupts can further denote power consumption events, indicating that the computing system is consuming more than a specified amount of power, as well as error events, such as single-bit memory errors.
These types of interrupts are typically not preemptible. That means that if such an interrupt is generated, the processor of the computing system in question automatically halts whatever it is currently doing so that the firmware is able to respond to the interrupt. An interrupt architecture in which interrupts are handled in this manner typically does not present any issues for many types of applications and for many types of computing systems. However, this kind of interrupt architecture can be problematic for real-time computing systems in which applications have to be guaranteed that they can respond to received requests in accordance with one or more real-time criteria.
For example, a given real-time application running on a computing system may normally be able to respond to requests in less than the maximum length of time specified by the real-time criteria. However, if during the processing of such a request a processor of the computing system is interrupted so that the firmware can respond to a generated interrupt, the application may not be able to respond to the request in less than the maximum length of time specified by the real-time criteria. This is because the time it takes for the firmware to process the interrupt delays the application from completing its response to the request.
Simply disabling the interrupt architecture of a computing system, however, is not a viable option. The interrupt architecture of a computing system performs needed functionality. That is, thermal events, power consumption events, and error events are types of events that ultimately have to be processed in order for the computing system in question to perform—and to be monitored—properly. Thus, disabling the interrupt architecture, without taking other action, may ensure that applications can run in real-time in accordance with one or more real-time criteria, but may cause other problematic consequences. These consequences can include the computing system running at an operating temperature greater than specified, consuming more power than specified, running at reduced performance due to having to correct single-bit memory errors, and/or data corruption due to multiple-bit memory errors.